iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 9
0
Blockchain

商管學生如何從零開始學習區塊鏈系列 第 9

DAY9 為什麼所有人看到的智能合約狀態是一致的?

  • 分享至 

  • xImage
  •  

執行智能合約時,會產生狀態(state)改變,我會在之後更深入介紹以太坊區塊鏈時提到,現在我們先用一個例子讓大家認識一下狀態(state)改變,一樣是簡單儲存的例子,但是我們多加入increment和decrement函數,increment是增加,decrement是減少,那讓我們開始吧!

pragma solidity >=0.4.0 <0.7.0;

contract SimpleStorage {
    uint storedData;

    function set(uint x) public {
        storedData = x;
    }

    function get() public view returns (uint) {
        return storedData;
    }
   
    function increment(uint n) public {
        storedData = storedData + n;
        return;
    }

    function decrement(uint n) public {
        storedData = storedData - n;
        return;
    }
    
}

執行智能合約時為初始狀態(狀態1),跟前一個例子一樣,我們將值設置為525,狀態變為狀態2。
https://ithelp.ithome.com.tw/upload/images/20190920/20120814VzRXtYYyz4.jpg
接下來,增加50得到值575變成狀態3,最後減遞減75得到500,再次轉換到下一個狀態。
https://ithelp.ithome.com.tw/upload/images/20190920/20120814dXemqLwCi7.jpg
智能合約發布在以太坊區塊鏈上,當有人執行合約中的函數時,會修改合約狀態,為什麼修改後區塊鏈中所有人看到的合約狀態是一致的? 我將用下面這個例子說明。
https://ithelp.ithome.com.tw/upload/images/20190920/20120814PjJocNTHDa.jpg
首先,我們把剛建立的智能合約,複製一份,現在我有兩個智能合約,且這兩份合約有相同的地址,現在我將其中一份設置為1000,你會發現兩份智能合約都會得到1000這個值,這就是讓全世界的智能合約都處於一致狀態的方法。

目前我們Solidity的code先講到這裡(未來還有!),接著我們要回到以太坊和智能合約的內容,下一篇我會繼續解釋以太坊區塊鏈和智能合約,那我們明天見~


上一篇
DAY8 使用Remix IDE 發布一個簡單的智能合約
下一篇
DAY10 以太坊區塊鏈中的帳戶和Gas是甚麼?
系列文
商管學生如何從零開始學習區塊鏈30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言